package com.cloudkinto.service.finance;

import com.cloudkinto.entity.OrderTrackBillDo;
import com.baomidou.mybatisplus.extension.service.IService;

import com.cloudkinto.common.web.PageResult;
import com.cloudkinto.common.web.SingleResult;
import com.cloudkinto.extentity.track.OrderTrackNumberDto;
import com.cloudkinto.extentity.track.OrderTrackUnMatchDto;
import com.cloudkinto.service.finance.vo.track.MatchTrackBillReq;
import com.cloudkinto.service.finance.vo.track.UpdateAmountReq;
import com.cloudkinto.service.finance.vo.track.UpdateTrackCompanyReq;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  service接口
 * </p>
 * @author hua
 * @since 2023-08-02
 */
public interface OrderTrackBillService extends IService<OrderTrackBillDo> {

    SingleResult addInit();

    Object add(Object req, Long userId);

    SingleResult updateInit(Long id);

    Object update(Object updateVo, Long userId);

    int delete(Long id, Long userId);

    Object detail(Long id);

    SingleResult pageInit();

    List<Object> getList(Map<String, String> map);

    PageResult getListPage(Map<String, String> map);

    void importTrackBill(MultipartFile file, String year, Long userId) throws IOException;

    void updateTrackCompany(UpdateTrackCompanyReq req);

    PageResult getUnMatchList(Map<String, String> map);

    void matchTrackBill(MatchTrackBillReq req, Long userId);

    List<OrderTrackNumberDto> getTrackInfo(Long id, String orderType);

    void updateAmount(UpdateAmountReq req, Long userId);

    void export(Map<String, String> map, HttpServletResponse response) throws IOException;

    void markMatched(Long id, String orderType);
}
